Predicció accidents vasculars cerebrals

NOM I COGNOMS: Jordi Gual Obradors | Daniel Lijia Hu

1. Descripció del dataset. Perquè és important i quina pregunta/problema pretén respondre?

Està extreta del dataset original penjat a Kaggle per Fede Soriano. https://www.kaggle.com/fedesoriano/stroke-prediction-dataset

Context:

Segons la Organització Mundial per a la Salut, els accidents vasculars cerebrals (AVC) són la segona causa de mort a nivell mundial, responsables de prop del 11% de les morts totals.

Aquest conjunt de dades s'utilitza per a predir la probabilitat d'AVC per a un pacient a partir de dades com ara gènere, edat, historial mèdic i adicció al tabac. Cada filera correspon a informació rellevant per a cada pacient. Aquesta predicció pot ajudar a identificar aquestes persones susceptibles a patir un infart i poder prevenir-lo o predir-lo abans que succeeixi l'esdeveniment

El dataset es composa de 5110 registres diferents amb 12 variables diferents. Aquests variables són:

Informació dels atributs.

Importació de llibreries utilitzades:

Càrrega de les dades

Primeres informacions del dataset

2. Integració i selecció de les dades d’interès a analitzar

Com es veu, el dataset original es composa de 5110 registres diferents amb 12 variables. Seleccionarem les dades les quals tenim un registre complet o rellevant estadísticament.

3. Neteja de les dades.

3.1. Les dades contenen zeros o elements buits? Com gestionaries aquests casos?

3.2. Identificació i tractament de valors extrems.

Ara ja només ens queden 5110 - 201 - 1 = 4908 registres on no hi ha na's al bmi ni Other al gender. Passem a analitzar el tema outliers. L'atribut amb major presència d'outliers és el bmi. Definim outliers com aquells valors que superen en 1.5 vegades el valor interquartilic, comptant a partir del Q3. En el cas de bmi aquesta condició proporciona un valor de 47.5. Anem ara a veure quants pacients amb bmi extrem tenim:

Tenim 110 pacients amb un índex elevat de massa corporal. Els podríem eliminar o no sobretot en funció de quína proporció representen respecte als que tenen o no un AVC. Ja anem prou justos de valors amb stroke = 1 com per desprendre's de cap més!

Els pacients amb un ídndex elevat de massa corporal representen 2/110 = 1.8% dels pacients amb AVC mentre que en general tenim un 4.9%. Per tant, comptar-los o no serà poc influent. No obstant això, optem per no excloure'ls.

4. Anàlisi de les dades.

4.1. Selecció dels grups de dades que es volen analitzar/comparar (planificació dels anàlisis a aplicar).

Anem ara a presentar els diferents atributs en funció del valor de classe. Comencem pels atributs categòrics.

Fem ara el mateix amb els atributs numèrics. Al estar les dades desequilibrades, treballarem amb les densitats en lloc dels comptatges

Ja que tindrem en compte totes les variables, categòriques i quantitatives per la predicció de l'esdeveniment d'infart (stroke = 1) o no (stroke = 0), treballarem en la creació d'un classificador de pacients.

4.2. Comprovació de la normalitat i homogeneïtat de la variància.

Comprovarem la normalitat de la variància en les tres variables quantitatives: age, bmi i avg_glucose_level, tot i que com es pot veure als histogrames de l'apartat anterior, podem preveure que no ho seran.

L'edat segueix una distribució més tendint a uniforme.

Veiem que el bmi segueix una distribució lleugerament asimètrica, però bastant normal dins del que cap. Destaquen els outliers que fan que sembli bastant esbiaixada a la dreta.

Veiem que el nivell promig de glucosa fa que la distribució sigui bimodal. Es pot veure a l'histograma com hi ha dos pics diferents. Una suposició és que el pic inferior és de el nivell promig de la gent sana, i el pic superior del nivell promig de la gent diabètica.

No ens caldrà normalitzar les dades perquè farem un classificador, així que podem deixar les dades tal qual estan sense haver de tractar-les ni normalitzar-les pel seu estudi.

(4.3. - 5.) Aplicació de proves estadístiques per comparar els grups de dades. En funció de les dades i de l’objectiu de l’estudi, aplicar proves de contrast d’hipòtesis, correlacions, regressions, etc. Aplicar almenys tres mètodes d’anàlisi diferents. Representació dels resultats a partir de taules i gràfiques. (Resposta en conjunt perquè és més aclaridor)

Un punt a tractar és la conversió de les variables categòriques a variables numèriques per a que puguin ser interpretades pels classificadors. No caldrà fer-ho per les columnes 'hypertension' o 'heart_disease' perquè ja són de tipus numèric.

Ho farem amb la tècnica del One-Hot-Encoder. Abans, però, separarem els atributs de les etiquetes.

Ara generem els conjunts d'entrenament i verificació. També estandarditzarem les variables numèriques avg_glucose_level i bmi.

Un tema pendent de tractar és el desequilibri entre les dues categories de 'stroke'. Aquesta és una qüestió que no podem obviar ja que el desequilibri entre classes provoca biaixos en la majoria de classificadors a favor de la classe majoritària. Una opció evident seria eliminar instàncies majoritàries fins a igualar el nombre de minoritàries. Però també tenim la opció d'enriquir el dataset mab un major nombre de pacients minoritaris mitjançant SMOTE (Synthetic Minority Oversampling Technique).

La idea de SMOTE consisteix en crear (inventar) noves instàncies minoritàries mitjançant el mètode de KNN. Així, s'agafen els minoritaris, es calcula un KNN de x clusters, i es generen nous minoritaris entre cadascun dels minoritaris primitius i el centroide corresponent. Això és immediat per a variables numèriques; per a datasets amb variables numèriques i categòriques existeix la opció SMOTE-NC.

Amb aquesta opció, indiquem quínes són les variables categòriques i, per a aquestes, no es calcula una interpolació, es remostreja(copia) directament el valor.

El resultat és un conjunt amb 7518 instàncies euqilibrades per label 50-50.

Ara el que farem serà comparar els resultats que obtindríem amb un mateix classificador tant amb les dades inicials com amb el nou dataset ampliat. Utilitzarem com classificador patró la regressió logística.

Repetim el mateix amb el conjunt ampliat

I ara ens trobem en una situació de compromis: Els resultats són força semblants però en el primer cas, sense ampliar el conjunt de dades, s'obté un nombre de falsos negatius (predicció = 0, real = 1) FN=62 però gairebé no es comet cap altre error, mentre que en el cas ampliat, els FN=27, tot i que també han augmentat molt els falsos positius. En aquest cas potser sempre és millor reduir a la meitat els falsos negatius i donar tractament a la major quantitat de gent, a costa de malbaratar recursos amb els falsos positius que no enviar a casa a 35 pacients amb un AVC!

Seguirem per tant amb el joc de dades ampliat. Ara el que farem serà verificar els resultats que s'obtenen amb tres altres classificadors. Prendrem 3 dels més clàssics:

6. Resolució del problema. A partir dels resultats obtinguts, quines són les conclusions? Els resultats permeten respondre al problema?

Contribucions Signa
Investigació prèvia jgualob, dhu
Redacció de les respostes jgualob, dhu
Desenvolupament codi jgualob, dhu